home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import urllib
- import re
- import rb
-
- try:
- from xml.etree import cElementTree
- except:
- import cElementTree
-
-
- class LeoslyricsParser(object):
-
- def __init__(self, artist, title):
- self.artist = artist
- self.title = title
-
-
- def search(self, callback, *data):
- artist = urllib.quote(self.artist)
- title = urllib.quote(self.title)
- htstring = 'http://api.leoslyrics.com/api_search.php?auth=Rhythmbox&artist=%s&songtitle=%s' % (artist, title)
- loader = rb.Loader()
- loader.get_url(htstring, self.got_lyrics, callback, *data)
-
-
- def got_lyrics(self, lyrics, callback, *data):
- if lyrics is None:
- callback(None, *data)
- return None
- element = cElementTree.fromstring(lyrics)
- if element.find('response').attrib['code'] is not '0':
- print 'got failed response:' + lyrics
- callback(None, *data)
- return None
- match = element.find('searchResults').find('result')
- if match.attrib['exactMatch'] is None:
- print 'no exact match:' + lyrics
- callback(None, *data)
- return None
- lurl = 'http://api.leoslyrics.com/api_lyrics.php?auth=Rhythmbox&hid=%s' % urllib.quote(match.attrib['hid'].encode('utf-8'))
- loader = rb.Loader()
- loader.get_url(lurl, self.parse_lyrics, callback, *data)
-
-
- def parse_lyrics(self, result, callback, *data):
- if result is None:
- callback(None, *data)
- return None
- element = cElementTree.fromstring(result)
- lyrics = element.find('lyric').find('text').text
- lyrics += '\n\nLyrics provided by leoslyrics.com'
- callback(lyrics, *data)
-
-
-